home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / dfue / elcheapofax / faxcmd / libfax / rcs / c2proto.h,v < prev    next >
Text File  |  1995-03-09  |  8KB  |  315 lines

  1. head    1.5;
  2. access;
  3. symbols
  4.     OCT93:1.5;
  5. locks;
  6. comment    @ * @;
  7.  
  8.  
  9. 1.5
  10. date    93.10.25.02.20.15;    author Rhialto;    state Exp;
  11. branches;
  12. next    1.4;
  13.  
  14. 1.4
  15. date    93.09.18.20.16.23;    author Rhialto;    state Exp;
  16. branches;
  17. next    1.3;
  18.  
  19. 1.3
  20. date    93.06.11.23.22.07;    author Rhialto;    state Exp;
  21. branches;
  22. next    1.2;
  23.  
  24. 1.2
  25. date    93.06.11.16.15.25;    author Rhialto;    state Exp;
  26. branches;
  27. next    1.1;
  28.  
  29. 1.1
  30. date    93.06.11.15.19.27;    author Rhialto;    state Exp;
  31. branches;
  32. next    ;
  33.  
  34.  
  35. desc
  36. @Magic constants for class 2 fax commands
  37. @
  38.  
  39.  
  40. 1.5
  41. log
  42. @Make +FBOR flexible.
  43. @
  44. text
  45. @/* $Id: c2proto.h,v 1.4 1993/09/18 20:16:23 Rhialto Exp $
  46.  * $Log: c2proto.h,v $
  47.  * Revision 1.4  1993/09/18  20:16:23  Rhialto
  48.  * Add BOR_*, FAX_F_FPOLL.
  49.  *
  50.  * Revision 1.3  1993/06/11  23:22:07  Rhialto
  51.  * Add definition of DC2.
  52.  *
  53.  * Revision 1.2  1993/06/11  16:15:25  Rhialto
  54.  * First real RCS checkin
  55.  *
  56.  */
  57. /*
  58.   c2proto.h
  59.  
  60.   (c) Copyright 1991 by David M. Siegel.
  61.       All rights reserved.
  62.  
  63.   %W% %G% %U%
  64. */
  65.  
  66. #ifndef in_libfax_c2proto_h
  67. #define in_libfax_c2proto_h 1
  68.  
  69. #define TRUE  1
  70. #define FALSE 0
  71.  
  72. #define ETX  '\003'
  73. #define DLE  '\020'
  74. #define XON  '\021'     /* DC1 */
  75. #define DC2  '\022'     /* DC2 */
  76. #define XOFF '\023'     /* DC3 */
  77. #define CAN  '\030'
  78.  
  79. /*
  80.  * Various timeouts are defined here, in seconds:
  81.  */
  82. #define TIMEOUT_CONNECT     60    /* wait for a connection        */
  83. #define TIMEOUT_HANGUP        5    /* wait for hangup to complete        */
  84. #define TIMEOUT_ANSWER        15    /* wait for phone to be answered    */
  85. #define TIMEOUT_END_PAGE    120 /* wait for end of page to be acked    */
  86. #define TIMEOUT_END_XMIT    120 /* wait for end of xmit to be acked    */
  87. #define TIMEOUT_BIT_REVERSE 5    /* wait for bit reverse to be acked    */
  88. #define TIMEOUT_BYTE_ALIGN  5    /* wait for byte align to be acked    */
  89. #define TIMEOUT_SET_CAPABILITIES  5 /* wait for set capabilities ack    */
  90. #define TIMEOUT_SEND_PAGE   60    /* final send of page timeout        */
  91. #define TIMEOUT_RECV_PAGE   60    /* final recv page ack            */
  92. #define TIMEOUT_WANT_POLL   5    /* wait for +FSPL to be acked           */
  93. #define TIMEOUT_FDT        180 /* wait for begin of page negotiations  */
  94.  
  95. /*
  96.  * Standard Hayes-style modem result codes:
  97.  */
  98. #define RESULT_OK        0
  99. #define RESULT_CONNECT        1
  100. #define RESULT_RING        2
  101. #define RESULT_NO_CARRIER    3
  102. #define RESULT_ERROR        4
  103. #define RESULT_NO_DIALTONE    6
  104. #define RESULT_BUSY        7
  105. #define RESULT_NO_ANSWER    8
  106.  
  107. /*
  108.  * Post page response codes:
  109.  */
  110. #define PPR_MCF     1    /* page good                */
  111. #define PPR_RTN     2    /* page bad; retrans requested        */
  112. #define PPR_RTP     3    /* page good; retrans requested     */
  113. #define PPR_PIN     4    /* page bad; interrupt requested    */
  114. #define PPR_PIP     5    /* page good; interrupt requested    */
  115.  
  116. /* vertical resolution */
  117. #define VR_NORMAL    0    /* 7.6/mm */
  118. #define VR_FINE     1    /* 3.8/mm */
  119.  
  120. /* baud rate */
  121. #define BR_2400     0
  122. #define BR_4800     1
  123. #define BR_7200     2
  124. #define BR_9600     3
  125. #define BR_12000    4
  126. #define BR_14400    5
  127.  
  128. /* width */
  129. #define WD_1728     0    /* in 215 mm 8/mm (A4 is 210 mm) */
  130. #define WD_2048     1    /* in 255 mm 8/mm */
  131. #define WD_2432     2    /* in 303 mm 8/mm */
  132. #define WD_1216     3    /* in 151 mm 8/mm */
  133. #define WD_864        4    /* in 107 mm 8/mm */
  134.  
  135. /* page length */
  136. #define LN_A4        0    /* 297 mm */
  137. #define LN_B4        1    /* 364 mm */
  138. #define LN_UNLIMITED    2
  139.  
  140. /* data format */
  141. #define DF_1DHUFFMAN    0    /* 1-D modified Huffman */
  142. #define DF_2DMREAD    1    /* 2-D modified Read */
  143. #define DF_2DUNCOMP    2    /* 2-D uncompressed mode */
  144. #define DF_2DMREAD2    3    /* 2-D modified Read ?? */
  145.  
  146. /* error correction */
  147. #define EC_DA_ECM    0    /* Disabled */
  148. #define EC_EN_ECM_64    1
  149. #define EC_EN_ECM_256    2
  150.  
  151. /* binary file */
  152. #define BF_DISABLED    0
  153. #define BF_ENABLED    1
  154.  
  155. /* scan time */
  156. #define ST_0        0
  157. #define ST_1        1
  158. #define ST_2        2
  159. #define ST_3        3
  160. #define ST_4        4
  161. #define ST_5        5
  162. #define ST_6        6
  163. #define ST_7        7
  164.  
  165. typedef struct _T30params {
  166.     int vr;            /* vertical resolution        */
  167.     int br;            /* bit rate            */
  168.     int wd;            /* page width            */
  169.     int ln;            /* page length            */
  170.     int df;            /* data compression format    */
  171.     int ec;            /* error correction        */
  172.     int bf;            /* binary file transfer     */
  173.     int st;            /* scan time            */
  174. } T30params;
  175.  
  176. /* bit order +FBOR=n 
  177.  * Direct bit order is LSB first, but for practical purposes
  178.  * people like their bit strings packed MSB first into bytes.
  179.  */
  180. #define BOR_C_DIR    0    /* phase C direct               */
  181. #define BOR_C_REV    1    /* phase C reversed             */
  182. #define BOR_C        0x1
  183. #define BOR_BD_DIR    (0<<1)    /* phase B/D direct             */
  184. #define BOR_BD_REV    (1<<1)    /* phase B/D reversed           */
  185. #define BOR_BD        0x2
  186.  
  187. /* The bit order we use */
  188. #define BOR_VALUE    BOR_C_DIR
  189.  
  190. /*
  191.   Fax flags:
  192. */
  193. #define FAX_F_SYNC    0000001 /* modem is in sync        */
  194. #define FAX_F_FCON    0000002 /* modem is connected        */
  195. #define FAX_F_FDCS    0000004 /* recved neg session params    */
  196. #define FAX_F_FDIS    0000010 /* recved remote capabilities    */
  197. #define FAX_F_FHNG    0000020 /* recved hangup code        */
  198. #define FAX_F_FNSF    0000040 /* recved nsf frame FAX     */
  199. #define FAX_F_FPTS    0000100 /* recved post page resp (ppr)  */
  200. #define FAX_F_FET    0000200 /* recved post page msg (ppm)   */
  201. #define FAX_F_FTSI    0000400 /* recved remote TSI string    */
  202. #define FAX_F_FCSI    0001000 /* recved remote CSI string    */
  203. #define FAX_F_FCIG    0002000 /* recved remote CIG string    */
  204. #define FAX_F_CANCELED    0004000 /* the remote end canceled    */
  205. #define FAX_F_RETRIES    0010000 /* too many retries sending page*/
  206. #define FAX_F_FCFR    0020000 /* recved fcfr response     */
  207. #define FAX_F_CONNECT    0040000 /* recved connect response    */
  208. #define FAX_F_FPOLL    0100000 /* recved pollable doc. avail.  */
  209.  
  210. /*
  211.   Modem error conditions.  When get_modem_response returns -1,
  212.   one of these error conditions will result.  This are hard
  213.   errors, that may not be possible to recover from.  The idea
  214.   is for protocol errors to be reported in the above flags.
  215. */
  216. typedef enum {
  217.     MODEM_STATUS_OK,        /* all ok            */
  218.     MODEM_STATUS_FAILED,    /* a system called failed    */
  219.     MODEM_STATUS_TIMEOUT,    /* the modem timed out        */
  220. } modem_status;
  221.  
  222. /*
  223.   Page reception codes.  Returned by faxmodem_recv_page().
  224. */
  225. typedef enum {
  226.     RECV_OK,
  227.     RECV_DONE,
  228.     RECV_FAILED,
  229. } recv_code;
  230.  
  231. #define MAX_ID_LEN    64
  232.  
  233. /*
  234.   This structure holds the current state of the faxmodem.  Various
  235.   fields are filled at different times in a fax session.  Not all
  236.   fields are valid at all times.  Check flags to see what field
  237.   currently hold valid information.
  238. */
  239. typedef struct _fax_modem {
  240.     int fd;            /* fd of the fax modem        */
  241.     modem_status status;    /* status for last modem op    */
  242.     int flags;            /* fax modem flags (see above)  */
  243.     int result;         /* last numeric result code    */
  244.     int dialer_code;        /* result from last ATDT op    */
  245.     int hangup_code;        /* +FHNG code; See table 8.3    */
  246.     int ppr_code;        /* +FPTS code; See table 8.2    */
  247.     int ppm_code;        /* +FET  code; See table 8.1    */
  248.     char ftsi_id[MAX_ID_LEN];    /* +FTSI id string        */
  249.     char fcsi_id[MAX_ID_LEN];    /* +FCSI id string        */
  250.     char fcig_id[MAX_ID_LEN];    /* +FCIG id string        */
  251.     T30params fdcs_params;    /* current session params    */
  252.     T30params fdis_params;    /* remote identification params */
  253.     T30params fdtc_params;    /* request for polling params    */
  254. } FaxModem;
  255.  
  256. #define FAX_ISSET(x,y)   (((x)->flags)&y)
  257. #define FAX_CONNECTED(x) (FAX_ISSET((x),FAX_F_FCON) && \
  258.               !FAX_ISSET((x),FAX_F_FHNG))
  259.  
  260. #endif
  261. @
  262.  
  263.  
  264. 1.4
  265. log
  266. @Add BOR_*, FAX_F_FPOLL.
  267. @
  268. text
  269. @d1 1
  270. a1 1
  271. /* $Id: c2proto.h,v 1.3 1993/06/11 23:22:07 Rhialto Exp $
  272. d3 3
  273. d49 1
  274. d144 1
  275. a144 1
  276. #define BOR_VALUE    BOR_C_REV
  277. @
  278.  
  279.  
  280. 1.3
  281. log
  282. @Add definition of DC2.
  283. @
  284. text
  285. @d1 1
  286. a1 1
  287. /* $Id: c2proto.h,v 1.2 1993/06/11 16:15:25 Rhialto Exp $
  288. d3 3
  289. d45 1
  290. d128 14
  291. d160 1
  292. @
  293.  
  294.  
  295. 1.2
  296. log
  297. @First real RCS checkin
  298. @
  299. text
  300. @d1 5
  301. a5 2
  302. /* $Id$
  303.  * $Log$
  304. d25 1
  305. @
  306.  
  307.  
  308. 1.1
  309. log
  310. @Initial revision
  311. @
  312. text
  313. @d1 3
  314. @
  315.